package cc.rengu.oltp.service.common.dao;

import cc.rengu.oltp.service.common.entity.DstChannelCfg;

import java.util.List;
import java.util.Set;

/**
 * 支付通道配置表操作接口
 * Created by 王成 on 2020/2/10
 */
public interface DstChannelCfgMapper {
    /**
     * 登记支付通道配置
     *
     * @param dstChannelCfg 支付通道配置
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertDstChannelCfg(DstChannelCfg dstChannelCfg) throws Exception;

    /**
     * 更新支付通道配置
     *
     * @param dstChannelCfg 支付通道配置
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateDstChannelCfgByPrimaryKey(DstChannelCfg dstChannelCfg) throws Exception;

    /**
     * 根据主键查询支付通道配置
     *
     * @param instId         多法人标识
     * @param dstChannelId   支付通道标识
     * @param dstChannelType 支付通道类型
     * @return 支付通道配置
     * @throws Exception 异常
     */
    DstChannelCfg selectDstChannelCfgByPrimaryKey(String instId, String dstChannelId, String dstChannelType) throws Exception;

    /**
     * 根据多法人信息查询支付通道配置
     *
     * @param instId       多法人标识
     * @param dstChannelId 支付通道标识
     * @return 支付通道配置
     * @throws Exception 异常
     */
    List<DstChannelCfg> selectDstChannelCfgBydstChannelId(String instId, String dstChannelId) throws Exception;

    /**
     * 查询所有通道配置信息
     *
     * @return 支付通道配置
     * @throws Exception 异常
     */
    List<DstChannelCfg> loadAllDstChannelCfg() throws Exception;

    /**
     * 加载所有数据库连接池的通道配置信息
     *
     * @param dbPoolCashNode    数据源缓存节点名称
     * @param dstChannelCfgList 通道配置信息
     * @throws Exception 异常
     */
    void loadAllDstChannelCfg(Set<String> dbPoolCashNode, List<DstChannelCfg> dstChannelCfgList) throws Exception;
}
